package com.ssy.lingxi.contract.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.contract.model.vo.common.response.PageItemVO;
import com.ssy.lingxi.contract.model.vo.execute.request.ContractExecutePartyAPageVO;
import com.ssy.lingxi.contract.model.vo.execute.request.ContractExecutePartyBPageVO;
import com.ssy.lingxi.contract.model.vo.execute.response.ContractExecuteDetailVO;
import com.ssy.lingxi.contract.model.vo.execute.response.ContractExecuteQueryVO;

import java.util.List;

/**
 * 合同执行接口定义
 * @author 伍将
 * @date 2021/2/2
 * @version 2.0.0
 */
public interface IContractExecuteService {

    /**
     * 甲方分页查询合同列表
     * @author 伍将
     * @date 2021/2/2
     * @param user: 当前登录用户
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<ContractExecuteQueryVO>> pageListByPartyA(UserLoginCacheDTO user, ContractExecutePartyAPageVO pageVO);

    /**
     * 乙方分页查询合同列表
     * @author 伍将
     * @date 2021/2/2
     * @param user: 当前登录用户
     * @param pageVO: 分页请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<ContractExecuteQueryVO>> pageListByPartyB(UserLoginCacheDTO user, ContractExecutePartyBPageVO pageVO);

    /**
     * 获取外部状态列表
     * @author 伍将
     * @date 2021/2/2
     * @return 操作结果
     **/
    Wrapper<List<PageItemVO>> getOuterStatusList();

    /**
     * 获取甲方合同详情
     * @author 伍将
     * @date 2021/3/9
     * @param user: 当前登录用户
     * @param contractId: 合同id
     * @return 操作结果
     **/
    Wrapper<ContractExecuteDetailVO> getDetail(UserLoginCacheDTO user, Long contractId);
}
